1. Criptografía Aplicada

Videos:
https://open.fing.edu.uy/courses/fsi/3/
https://open.fing.edu.uy/courses/fsi/4/
https://open.fing.edu.uy/courses/fsi/5/

Diapositivas:

[[criptografia_aplicada.pdf]]

Métodos criptográficos

Criptosistema clásico

Se llama criptosistema al conjunto de:

  • Un conjunto finito de posibles textos planos.
  • Un conjunto finito de posibles textos cifrados.
  • Un conjunto finito de posibles claves.
  • Un conjunto de reglas de cifrado y otro de reglas de descifrado, que cumplen que:
    para todos los posibles textos planos x

Criptoanálisis

Es el estudio de métodos para obtener el significado de la información que está cifrada.
Es la ciencia de descifrar códigos, decodificar secretos, violar esquemas de autenticación y romper protocolos criptográficos.

Seguridad

Incondicional

No importa que tiempo o poder de cálculo se disponga, el cifrado no podrá ser quebrado ya que no hay suficiente información para determinar de forma única el correspondiente texto plano.

> Ejemplo: one-time-pad #parcial

Transmisor y receptor deben compartir una “clave” de al menos el mismo largo del texto plano a cifrar.
Los bits de la clave deben ser elegidos aleatoriamente de forma independiente.
Si , , ... texto plano, , , ... texto cifrado y , , ... la clave de cifrado: XOR (cifrado de Vernam).

Computacional

Dado un poder de recursos computacionales, el tiempo necesario de cálculo esperado para quebrar un código es más grande que el tiempo de vida del mensaje.

Algoritmos simétricos

Los algoritmos simétricos utilizan la misma clave para cifrar y descifrar la información.
A la clave se le denomina “clave secreta”, “llave secreta”, “secreto compartido” (Secret-Key o shared key en inglés).

> Cifrados en bloque #parcial

El cifrado en bloque procesa el mensaje para cifrar o descifrar en bloques de tamaño fijo.

  • Dado un bloque de texto plano de tamaño bits, y una clave de tamaño bits, la función de cifrado genera un texto cifrado de bits.
  • Para cada clave , es una permutación sobre el conjunto de los bloques de entrada.
  • , la función de desencriptado, realiza la transformación inversa para obtener el texto plano.

> Modos de operación #parcial

En general querremos cifrar datos que no son del tamaño de un bloque. Esto nos lleva a definir los llamados “modos de operación”, que nos dicen cómo cifrar un conjunto de bloques que forman un mensaje.

  • ECB: Electronic Code Book
    Se completa el texto plano para llevarlo a un múltiplo del tamaño de bloque.
    Cada bloque es cifrado independientemente de los demás.
    Es como si tuviéramos una tabla o libro donde para cada texto plano se da su correspondiente texto cifrado.
    > Problema: caso del misil. #parcial
  • > CBC: Cipher Block Chaining #parcial
    Se utiliza un vector de inicialización de n bits (IV: initialization vector).
    Cada texto cifrado se hace depender de los anteriores.
    Cualquier cambio en un bloque afecta a los siguientes.
  • OFB: Output FeedBack
    El mensaje es tratado como un flujo de bits.
    La salida del cifrado es reutilizada para la siguiente etapa.
  • CFB: Cipher FeedBack

> Cifrados en stream #parcial

El cifrado en stream lo procesa de a bit o byte.

  • Aproximan el cifrado incondicionalmente seguro, evitando el problema de que la clave debe ser tan grande como el texto plano.
  • La clave es generada de forma pseudoaleatoria a partir de una clave más chica.
    Los generadores de números pseudoaleatorios usan una función que produce un stream de bits determinista y que, en algún momento, se repetirán. Se busca que, estadísticamente, sean indistinguibles de una secuencia de números aleatorios.
  • El cifrado de un texto plano se hace usualmente de a carácter (byte) por vez, aunque podría ser bit a bit.
  • Tiene poco o ningún error de propagación.

Ejemplo: RC4

  • Diseñado por RSA security (1987).
  • Está basado en el uso de permutaciones aleatorias.
  • Es usado en los estándares SSL/TLS.
  • Algunos problemas dependiendo de cómo se use. Su uso va disminuyendo.

Algoritmos asimétricos

Los métodos asimétricos, conocidos como de clave pública, se basan en encontrar un criptosistema donde se tienen dos claves distintas para cifrar y descifrar, y es computacionalmente imposible obtener la clave de descifrado () a partir de la clave de cifrado() (o viceversa).

Los criptosistemas de clave pública nunca pueden brindar seguridad incondicional:
El adversario puede cifrar cualquier texto plano (ya que dispone de la clave de cifrado) y verificar si alguno coincide con el texto cifrado.
-> Eventualmente, romperá el cifrado.

> Encriptación RSA #parcial

  • Se basa en la seguridad computacional de la factorización.
  • Si se encontrara un método rápido de factorización, el criptosistema sería fácil de quebrar.
    Pasted image 20240331134840.png
  • Para generar claves:
    Pasted image 20240331135253.png
  • Enviar mensajes:
    Pasted image 20240331135343.png
  • Recibir mensajes:
    Pasted image 20240331135356.png

> Firma #parcial

Para realizar una firma digital, podemos (simplificadamente) cifrar el mensaje con nuestra clave privada.
Para validar la firma, solo hay que descifrar con la clave pública.

> Uso práctico #parcial

Los algoritmos de cifrado asimétricos son mucho más lentos que los algoritmos simétricos.
Usualmente se utilizan solamente para autenticación, para firmas, y para el intercambio de claves de sesión para un algoritmo simétrico.

Hashes, Secure Hashes y MACs

  • Secure Hash: un hash que cumple ciertas propiedades básicas de seguridad
  • MAC: Message Authentication Code (incluye clave)

Secure Hashes y MACs comparten ciertas características:

  • A partir de un mensaje de largo arbitrario se genera un valor de largo fijo, que de alguna manera representa al mensaje original (Message Digest, o “resumen” del mensaje).
  • No debe poder derivarse un mensaje del resumen.

Secure Hashes

> Requerimientos #parcial

  • Compresión: mapean un mensaje de largo arbitrario, en un valor de largo fijo relativamente pequeño.
  • Dado , debe ser relativamente sencillo calcular .
  • Difusión: el resumen debe ser una función compleja de todos los bits del mensaje : si se modifica un solo bit del mensaje , se espera que el hash cambie aproximadamente la mitad de sus bits.
  • > Unidireccionalidad: conocido un resumen , debe ser computacionalmente imposible encontrar un mensaje tal que .
  • > Resistencia débil a las colisiones: Conocido , es computacionalmente imposible encontrar tal que .
  • > Resistencia fuerte a las colisiones: Es computacionalmente imposible encontrar e distintos tales que .

> Usos típicos #parcial

  • Verificación de integridad.
  • Función auxiliar para firmas digitales.
  • Identificadores únicos para archivos.
    • Redes p2p.
    • Comparación entre archivos sin necesidad de leerlo todo.
  • Sistemas de password.
  • MACs
  • Blockchain

Algoritmos populares

  • MD5
    Se puede encontrar fácilmente colisiones en MD5 ( e tales que ). O sea, no tiene resistencia fuerte.
    No debería usarse más, pero se usa porque sigue sirviendo en algunas apliaciones.
  • SHA-1, 2, y 3
    v1 ya no debe usarse, método teórico para romperlo encontrado en 2005.
    Se recomienda usar v3.

MAC (Message Authentication Code)

Un algoritmo que, dado un mensaje (de largo arbitrario) y una clave (de largo fijo), produce un bloque de bits de largo fijo

Parecido a hashes, salvo por la clave

Requerimientos de seguridad:

  • Resistencia a colisiones.
  • Unidireccionalidad.
  • No debe poderse recuperar la clave, ni generar MAC sin conocer la clave.
  • Conociendo un mensaje y su MAC, es computacionalmente imposible encontrar otro mensaje con el mismo MAC.
  • Conociendo un mensaje y su MAC, es computacionalmente imposible encontrar la clave.

Aplicaciones

  • Integridad del mensaje.
  • Origen del mensaje (quien lo generó conoce la clave compartida).
    • NO ES LO MISMO QUE FIRMA DIGITAL

Uso de MAC para autenticación de mensajes

Pasted image 20240331145229.png

Uso de Secure Hash para generar MACs

Comparten propiedades y ya hay bastante desarrollo en Hashing.

Ejemplo: HMAC

Pasted image 20240331145520.png
Se probó la relación entre la seguridad de HMAC y el hash usado.

Funciones de MAC basadas en cifrado simétrico

Existen, hay varias implementaciones.

Firmas digitales

Se pretende diseñar un método digital equivalente a la firma manual de un documento.
Lo principal es poder verificar la autoría de la firma, además de cuándo fue hecha.

Problemas a resolver

  • Autenticidad del emisor.
  • Integridad del mensaje.
  • Actualidad (no replay).
  • No repudio (del emisor y receptor).
  • Detección de usurpación de identidad.
  • Deben ser verificables por terceros.

Firmas con criptografía asimétrica

  • Si ciframos mensaje con la clave privada, alcanza con verificar que es descifrado correctamente con la clave pública.
  • Los algoritmos asimétricos son lentos y se generarían firmas tan largas como el mensaje.
    Solución: se cifra un hash (o resumen) del mensaje con la clave privada.

Ejemplo de procedimiento con RSA

Pasted image 20240331151028.png

Problemas de la criptografía de clave pública

  • ¿Cómo distribuir la clave pública?
  • ¿Cómo estoy seguro que la clave pública que tengo es realmente la de A, y que es actual?
  • ¿Qué pasa si A alega que el no firmó? ¿y si alega que le robaron la clave?
    Dos soluciones:
    • Exigir que cada mensaje lleve un timestamp, y exigir reporte “inmediato” de claves comprometidas a una autoridad central.
    • PKI: utilizar un “árbitro”, una entidad confiable que certifique el origen y contenido del mensaje.

Infraestructura de clave pública (PKI) y certificados digitales de clave pública

> Definición de "Infraestructura de clave pública" #parcial

Un sistema de CAs (certification authorities), opcionalmente RAs (autoridades de registro) y otros servidores y agentes, que realizan algún subconjunto de las funciones de:

  • administración de certificados,
  • archivo de certificados expirados,
  • administración de claves,
  • administración de tokens;
    para una comunidad de usuarios, en una aplicación de criptografía asimétrica.

> Funciones principales #parcial

  • Registrar entidades (usuarios) y emitir sus certificados digitales.
  • Revocar certificados cuando se requiera.
  • Archivar los datos necesarios para validar los certificados en el futuro.

> Certificado digital #parcial

Documento firmado por una CA (autoridad de certificación) que contiene diversos datos, al menos:

  • Identificación de una entidad (usuario).
  • Su clave pública.
    Tanto emisor como receptor deben confiar en esa CA para que el certificado sea útil.

Utilidad del certificado

Me permite asociar la clave pública con la identidad presente en el certificado.
O sea, permite la distribución de claves públicas de forma confiable.

Validación del certificado

Si tengo la clave pública de la CA, puedo verificar la firma de la CA.

  • Me asegura que la información en el certificado es la misma que la CA firmó.
  • Si confío en la CA, puedo asumir que la CA verificó la información contenida en el certificado.

Estándar X.509

Formato más usado.

Esquema simplificado del certificado:
Pasted image 20240331152431.png

Estructura de una PKI

Pasted image 20240331152550.png

  • > CA: Autoridad de Certificación. Es quien firma los certificados. #parcial
  • RA: Autoridad de Registro. Es quien debería verificar la identidad del solicitante. Es la interfaz con la CA.
  • > CRL: Certificate Revocation List. Lista de certificados revocados.
    • Hay formatos para la información, y protocolos para acceder a ese repositorio. #parcial

> Jerarquía de CAs #parcial

Cómo pueden confiar mutuamente dos usuarios?

  • Si los participantes comparten una CA:
    Se asume que conocen su clave pública.
  • De lo contrario:
    • CAs deben formar una jerarquía.
    • Se usan certificados para validar a otras CA.
    • Cada CA tiene certificados de sus clientes, y de sus superiores.
    • Permite a un usuario de un CA verificar los certificados de otras CAs en la jerarquía.

Revocación #parcial

Certificados tienen un período de validez.
Además, puede ser necesario forzar su expiración antes:

  • Compromiso de la clave privada.
  • Compromiso de la clave de la CA.
  • La CA no certifica más a ese usuario.

Autenticación mediante claves compartidas

Clase particular de protocolos de autenticación. Usado como soporte de otras operaciones más complejas.

Posibilidades para distribuir claves simétricas

  • A genera la clave y se la entrega físicamente a B.
  • C selecciona la clave y la entrega a A y B.
  • A y B usaron recientemente una clave (ya conocida y compartida), y envían la nueva clave cifrada con la vieja clave.
  • A y B tienen una conexión cifrada con C. C puede entregar una clave a A y B por los enlaces cifrados.
    • Surge la idea de Key Distribution Center (KDC).

Esquema Básico

Dos entidades (principales) que quieren comunicarse utilizan un “tercero confiable”.

Notación

  • A y B son los usuarios. S es el KDC.
  • es la clave simétrica compartida entre las entidades X e Y.
  • T es un timestamp.

Procedimiento

Pasted image 20240423154809.png

  • A le dice a S que quiere iniciar la comunicación entre A y B.
  • El servidor genera , un timestamp y lo envía dos veces a A. Encripta una con y otra con .
  • A inicia la comunicación segura con B enviando el segundo paquete de antes y el mensaje encriptado con la nueva clave.

Protocolo de Needham-Schroeder

Sigue el esquema básico discutido en la slide anterior pero usa nonces en lugar de timestamps.

  • Nonce: número "use once".

Notación

y son nonces generados por A y B.

> Procedimiento #parcial

Pasted image 20240423154758.png
Problema: B tiene que asumir que la clave que le envía S (vía A) es “fresca”.

Kerberos

Pasted image 20240423174344.png

TLS (Transport Layer Security) y SSL (secure sockets layer)

  • TLS es el sucesor de SSL.
  • Provee autenticación, integridad y privacidad.
  • TLS funciona entre TCP y la aplicación.
  • SSL Record layer
    • Confidencialidad, autenticación, y protección contra replay.
    • Define el formato para intercambiar los datos.
  • SSL Handshake Protocol
    • Intercambio de claves.

Conexión y Sesión

Handshake

> Laboratorio #parcial

Base 64

Sirve para codificar cualquier tipo de archivo, texto plano o no.

Man-in-the-middle

Ataques ARP spoofing/poissoning

Manera mas simple de detectarlo: si en la tabla de local de ARP, hay dos IPs distintas con el mismo MAC.

MITM con claves asimétricas pero sin modelo de confianza

A desea comunicarse con B (no tienen conocidos en común y no intercambian fingerprint's).
C quiere interceptar la comunicación. Para iniciar la comunicación, A solicita a B su clave pública. B envía su clave a A por un canal público. C es capaz de interceptarla. C envía a A su clave pública. A, creyendo que la clave pública recibida es de B, cifra un mensaje con la clave de C y la envía a B. C intercepta nuevamente, descifra con su clave privada; vuelve a cifrar el mensaje con la clave de B y lo re-enviaría a B. Cuando B lo reciba, cree que proviene de A.

Uso de herramientas GPG y OpenSSL

GPG/PGP

Es una herramienta de cifrado y firmas digitales.
Usos:

  • Firmar un documento.
  • Mecanismos para preservar confidencialidad e integridad.
    El modelo de confianza usado por GPG/PGP es "Web of Trust".

Las claves públicas pueden ser compartidas con otros usuarios de muchas maneras, un ejemplo de ello es depositándolas en los servidores de claves o en "fiestas" de firmado.

GPG requiere importar una clave pública de un tercero para poder firmarla.

OpenSSL

Herramientas de administración y bibliotecas relacionadas con criptografía.
Usos:

  • Permite crear certificados digitales que pueden aplicarse a un servidor.
  • Usado por el protocolo TLS

OpenSSL usa el modelo de confianza "Infraestructura de Clave Publica" (PKI). No requiere tener firmas de mas entidades además de la certificadora.

Resistencia débil a colisiones y MD5

"Message-Digest Algorithm 5". Genera un resumen de 128 bits expresado comúnmente como una cadena hexadecimal.

Se usa comúnmente para:

  • comprobación de integridad de archivos
    • comprobar ISOs antes de grabarlas a CD
    • comprobar archivo descargado
    • detectar cualquier modificación desde la generación del MD5
  • implementación de servicios no repudio

Vulnerabilidades

No tiene resistencia fuerte a colisiones. Se sigue usando porque no todas los usos necesitan dicha resistencia (por ejemplo, comprobaciones de intregridad).